OctoPos EVM — Capabilities and Endpoints
V8.3 (2026-06-19). 8 endpoints, 16 DeFi protocol adapters on Ethereum, 30s position cache, 30s price cache.
Endpoints
All endpoints are GET and read-only. Base URL: https://api-evm-octopos-mainnet.crediolabs.ai.
/v1/evm/supported-chains
Returns the list of chains OctoPos indexes, with per-endpoint supported flags.
curl https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/supported-chains
/v1/evm/balances/:address
Multi-chain ERC-20 + native balances. Defaults to the 13-chain default tag; pass chain_ids to override.
curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/balances/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e?chain_ids=1&limit=5'
Returns { total_usd, balances[] }. Each balance carries chain_id, token_address, symbol, decimals, balance, price_usd, value_usd, logo_url, plus optional pool_size and fdv for tokens with DefiLlama metadata.
/v1/evm/stablecoins/:address
Stablecoin-only filter on the balances route. Use this for treasury / float monitoring.
curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/stablecoins/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e?chain_ids=1'
/v1/evm/activity/:address
Token transfers + native transactions. Filter by activity_type (send, receive, mint, burn, swap, approve, call) and asset_type (native, erc20, erc721, erc1155).
curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/activity/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e?activity_type=swap&limit=10'
/v1/evm/transactions/:address
Raw transactions with optional 4byte decode via ?decode=true. Lower cost than /activity for the same address.
curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/transactions/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e?decode=true&limit=10'
/v1/evm/defi/positions/:address
DeFi protocol positions — Aave, Compound, Uniswap, etc. Ethereum mainnet only; other chains return zero protocol positions even when the wallet holds DeFi tokens on those chains.
curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/defi/positions/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e?chain_ids=1'
/v1/evm/subscriptions[/:id]
Webhook CRUD for balance, activity, and transaction change notifications.
# Create
curl -X POST https://api-evm-octopos-mainnet.crediolabs.ai/v1/evm/subscriptions \
-H 'content-type: application/json' \
-d '{"address":"0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e","chain_ids":[1],"webhook_url":"https://example.com/hook"}'
/v1/positions/:chainId/:address and /v1/contracts/:chainId/:address
Stellar-path-compatible shim. Path-only; no auth, no x402 settlement, no CORS binding. Provided so Stellar clients can hit the same shape against EVM data.
curl 'https://api-evm-octopos-mainnet.crediolabs.ai/v1/positions/1/0x47ac0fb4F2D87dF90e6A2c5c6c0b0e3a0b0e0e0e'
Protocols (16 adapters, Ethereum only)
All 16 DeFi adapters live in packages/evm-adapters/src/adapters/. Every adapter that calls an external protocol restricts itself to chainId === 1 (Ethereum mainnet). The wallet adapter is the only one that reads all 16 chains.
| Protocol | Coverage |
|---|---|
| Wallet (native + ERC-20) | All 16 chains |
| LP Discovery | Ethereum — enumerates Uniswap V2/V3, Curve, Balancer pools |
| Aave V2 | Ethereum — supply + borrow positions |
| Aave V3 | Ethereum — supply + borrow + collateral switch |
| Compound V3 | Ethereum — supply + borrow |
| Uniswap V2 | Ethereum — liquidity pool positions |
| Uniswap V3 | Ethereum — NFT liquidity positions (uses tokenOfOwnerByIndex) |
| Curve | Ethereum — registry-enumerated pools |
| Lido | Ethereum — stETH staking balance |
| Maker | Ethereum — DSR savings + vault collateral |
| Balancer | Ethereum — pool tokens |
| Morpho | Ethereum — Blue API GraphQL market data |
| Sky | Ethereum — sUSDS vault + USDS savings |
| Pendle | Ethereum — PT/SY markets (V3 MarketFactory reverted; PT coverage limited to 4 manual addresses) |
| Yearn | Ethereum — vault share balances |
| Euler | Ethereum — EVC v2 borrow positions (supply full; borrow limited) |
| Stader | Ethereum — ETHx staking |
Adapter coverage is Ethereum-only by design. The adapter layer was built to maximise depth on the chain with the deepest DeFi ecosystem and broadest price oracle coverage. Multi-chain DeFi adapter expansion (BNB Venus, Polygon Aave, etc.) is the next phase — P0/P1 priority but not yet scoped.
Known structural gaps
These are properties of the data sources OctoPos depends on. They cannot be fixed without paid API keys, third-party services, or off-chain data.
- CEX holdings not visible — OctoPos reads on-chain data only. Binance / Coinbase hot wallets aggregate CEX-held assets not visible on-chain. In the V4 cross-check, 77/196 wallets (39%) showed severe under-reports due to CEX aggregation. There is no on-chain fix; a CEX-data integration would be required to close this gap.
- NFT positions not supported — Tier 4 deferral. No protocol adapter reads ERC-721 / ERC-1155 positions.
- Token holders distribution not supported — Tier 4 deferral.
- Multi-chain DeFi positions not supported — A wallet with BNB-chain DeFi positions (e.g., Venus on BNB) shows zero for those positions even though
balancescorrectly returns the wallet's BNB assets. - Public RPC flakiness — Even with chunking (8 calls),
allowFailure:true, and per-URL fallback chains, public RPCs flake ~10% of the time. Some balance reads return partial results during RPC instability.
V8.3 changelog
- 30-second DefiLlama price cache —
packages/evm-adapters/src/prices/defi-llama.ts. Repeated calls within a 30s window return bit-exact identical totals. Reduces cross-check variance vs DeBank from a ~0.05–0.5% per-token drift band to a single coherent snapshot. - Per-call multicall retry —
packages/evm-adapters/src/lib/multicall-retry.ts. Re-issues only failed contracts with exponential backoff (300/600/1200ms, max 3 attempts). Wired into the wallet adapter. - LP discovery on 7 chains — Uniswap V2/V3, Curve, Balancer pool enumeration extended.
- 13-chain default at
/v1/evm/balances— was Ethereum-only by default; now expands to the Simdefaulttag automatically. - Multi-chain aggregation in UI — Total value KPI and card/table views sum across all chains in a multi-chain query rather than only the first.
Cross-links
- Overview — deployments, architecture, version status
- Supported chains — 16 supported + 9 deferred
- Untangled OctoPos engineering: per-adapter matrix (feat/evm-port)
- Untangled OctoPos engineering: known gaps and fixes (feat/evm-port)